# 字典dic

## 基本操作
{}
dict()
{'name':'John',"age":23}
{'book':{'name':'编程',99:'编号'}}
{(1,2,3):"e","d":12}
dict(name='John',age=25)
dict.fromkeys(['name','age'])           #{'age': None, 'name': None}
dict.fromkeys(['name','age'],0)         #{'age': 0, 'name': 0}
dict.fromkeys('abc')                    #{'a': None, 'b': None, 'c': None}
dict(zip(['name','age'],['John',25]))   #{'age': 25, 'name': 'John'}
x={}
x['name']='John'
x['age']=25
x[1]=1
x

len(x)

'name' in x             #判断key是否在

x={'book':{'Python':100,'C++':99},'publish':'人民邮电出版社'}
x['book']
x['publish']
x['book']['C++']

x=dict(name='John',age=2)
x['age']=25
x
del x['name']
x

## 常用方法
x=dict(name='John',age=10)
x.clear()

y = x.copy()        #深拷贝
y['age'] = 15
x                   #{'age': 10, 'name': 'John'}
y                   #{'age': 15, 'name': 'John'}

x=dict(name='John',age=10)
x['sex']            #报错
x.get('name')
x.get('sex')        #返回空
x.get('sex','male') #返回默认值，male

x=dict(name='John',age=10)
x.pop('name')           #返回并删掉这个属性
x.pop("sex")            #报错
x.pop("sex","male")     #male

x=dict(name='John',age=10)
x.popitem()
x

x=dict(name='John',age=10)
x.setdefault("phone","212345678")   #set值，如果不存在则设置默认值
x

x=dict(name='John',age=10)
x.update({'age':15,'sex':'male'})
x
x.update(phone=110)
x

## 视图
x=dict(name='John',age=10)
y=x.items()
y
x['age']=15
y           #dict_items([('name', 'John'), ('age', 15)])，视图也会更新
x['sex']='male'
y           #dict_items([('name', 'John'), ('age', 15), ('sex', 'male')])，视图也会更新


x=dict(name='John',age=10)
y=x.keys()
y
x['age']=15
y
x['sex']='male'
y           #dict_keys(['name', 'age', 'sex'])，视图也会更新

x=dict(name='John',age=10)
y=x.values()
y
x['age']=15
y
x['sex']='male'
y           #dict_values(['John', 15, 'male'])，视图也会更新

x={'a':1,'b':2}
kx=x.keys()
kx
y={'b':1,'d':2}
ky=y.keys()
ky

kx-ky   #{'a'}
kx&ky   #{'b'}
kx|ky   #{'a', 'b', 'd'}
kx^ky   #{'a', 'd'}

